$(function () {
    initData();
    $('#projectId').combobox({
        onChange: function (n, o) {
            setTimeout("initDatagrid()", 1000);
            initDataSubjectTree(); // 加载科目
        }
    });

    $('#subjectId').combobox({
        onChange: function (n, o) {
            if (!isNull(n)) {
                var data = getSubjectInfo(n);
                if (!isNull(data) && !isNull(data.adjustCode)) {
                    getSubjectAdjustAuxilaryInfo(data.adjustCode, n);
                }
            }
        }
    });
    $('#selSource').combobox({
        onChange: function (n, o) {
            getVoucherSelType(n) // 获取凭证类型
        }
    });
    $('#source').combobox({
        onChange: function (n, o) {
            getVoucherType(n) // 获取凭证类型
        }
    });
});

/**
 * 获取科目信息
 * @param id
 * @returns {*}
 */
function getSubjectInfo(id) {
    $.messager.progress({text: '正在加载中...',});
    var subject;
    $.ajax({
            type: "post",
            async: false,
            url: finance + "/subject/querySubject",
            dataType: "json",
            data: {
                id: id
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                subject = data.data;
            },
            error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    )
    return subject;
}

// 加载表格
function initDatagrid() {
    $('#dg').datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: finance + '/voucherTemplate/listInfo',
        pagination: true,
        singleSelect: false,//如果为true，则只允许选择一行。
        title: "凭证模板列表",
        pageSize: pageSize,
        pageList: pageList,
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        queryParams: {
            projectId: $("#projectId").combobox("getValue")
        },
        frozenColumns: [[
            {field: "id", title: "编号", hidden: true},]],
        columns: [[
            {field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
            {field: 'subjectCode', title: '科目编码'},
            {field: 'subjectName', title: '科目名称'},
            {field: 'sequence', title: '凭证顺序'},
            {field: 'remark', title: '凭证摘要'},
            {
                field: 'drandcr', title: '借贷方向', align: 'center', formatter: function (value, row, index) {
                    if ("DR" == value) {
                        return "借方";
                    } else if ("CR" == value) {
                        return "贷方";
                    }
                }
            },
            {field: 'source', title: '凭证来源'},
            {field: 'ftype', title: '凭证类型'},
            {field: 'moneyExpression', title: '金额表达式'},
            {field: 'amountExpression', title: '数量表达式'},
            {field: 'conditionCommon', title: '公用条件表达式'},
            {field: 'conditionParam', title: '参数条件表达式'},
            {
                field: 'isLoop', title: '分录是否循环', align: 'center', formatter: function (value, row, index) {
                    if (1 == value) {
                        return "是";
                    } else {
                        return "否";
                    }
                }
            }
        ]],
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        },
        //双击事件
        onDblClickRow: function (rowIndex, rowData) {
            view(rowData)
        }
    }).datagrid("columnMoving");
}

// 初始化加载下拉框的值
function initData() {
    $.ajax({
            type: "post",
            url: finance + "/voucherTemplate/init",
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var voucherSourceList = data.data.voucherSourceList;
                var listProject = data.data.listProject;
                if (!isNull(voucherSourceList)) {
                    $('#source').combobox("loadData", voucherSourceList);
                    $('#source').combobox('selectedIndex', 0); //选中第一个
                    var voucherSourceList2 = data.data.voucherSourceList2;
                    voucherSourceList2.unshift({"showmsg": "==全部==", "value": ''});
                    $('#selSource').combobox("loadData", voucherSourceList2);
                }
                if (!isNull(listProject)) {
                    $('#projectId').combobox("loadData", listProject);
                    $('#projectId').combobox('selectedIndex', 0); //选中第一个
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

// 加载科目下拉框的值
function initDataSubjectTree() {
    $.ajax({
            type: "post",
            url: finance + "/subject/querySubjectTree",
            data: {
                projectId: $("#projectId").combobox("getValue")
            },
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var listSubject = data.data;
                if (!isNull(listSubject)) {
                    //在数组第一个追加
                    listSubject.unshift({"text": "==无上级==", "id": '0', "pId": "", "iconCls": "icon-bricks"});
                    $("#subjectId").combotree("loadData", listSubject);
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}


// 获取凭证来下的凭证类型
function getVoucherSelType(source) {
    $.ajax({
            type: "post",
            url: finance + "/voucherTemplate/getVoucherType",
            data: {
                source: source
            },
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var voucherTypeList = data.data.voucherTypeList;
                voucherTypeList.unshift({"showmsg": "==全部==", "value": ''});
                $('#selFtype').combobox("loadData", voucherTypeList);
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

function getVoucherType(source) {
    $.ajax({
            type: "post",
            url: finance + "/voucherTemplate/getVoucherType",
            data: {
                source: source
            },
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var voucherTypeList = data.data.voucherTypeList;
                //voucherTypeList.unshift({"showmsg": "==请选择==", "value": ''});
                $('#ftype').combobox("loadData", voucherTypeList);
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

//搜索的方法
function doSearch() {
    var queryParams = $("#dg").datagrid("options").queryParams;
    queryParams["remark"] = $("#selRemark").val();
    queryParams["ftype"] = getCommboxValue("selFtype");
    queryParams["source"] = getCommboxValue("selSource");
    $("#dg").datagrid("options").queryParams = queryParams;
    $("#dg").datagrid("load");
}

/**
 *  查看方法
 */
function view(rowData) {
    $('#myform').form('disableValidation');//清除验证样式
    $('#dlg').dialog({
        title: "查看凭证模板信息",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $("#adjust").html("");
    $('#myform').form('load', rowData);//页面赋值
    $('#subjectId').combotree('setValue', rowData.subjectId);
}

/**
 * 获取辅助项对应核算项目集合
 * @param id
 */
function getSubjectAdjustAuxilaryInfo(adjustCode, subjectId) {
    $.messager.progress({text: '正在加载中...',});
    $.ajax({
            type: "post",
            url: finance + "/subjectAdjustAuxilary/queryAdjustAuxilaryBySubjectId",
            dataType: "json",
            data: {
                projectId: $("#projectId").combobox("getValue"),
                subjectId: subjectId,
                adjustCode: adjustCode
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                $("#auxilary").html("");
                $("#divAuxilary").hide();
                var subjectAuxilarys = data.data;
                var i = 1;
                var html = "";
                for (var key in subjectAuxilarys) {
                    var id = "auxilary" + i;
                    if (i % 2 != 0) {
                        html += "<tr>"
                    }
                    html += "<td  align=\"right\" width=\"15%\">" + subjectAuxilarys[key].auxilaryName + "：</td><td align=\"left\"><input id=" + id + " name=\"auxilary\" editable=\"true\" " +
                        " class=\"easyui-combobox\" data-options=\"required:false,prompt:'==请选择==',panelHeight:'auto',panelHeight:'150px'," +
                        " valueField: 'value', textField: 'showmsg'\"/></td> ";
                    if (i % 2 == 0) {
                        html += "</tr>"
                    }
                    i++;
                }
                if (!isNull(html)) {
                    $("#divAuxilary").show();
                    $(html).appendTo("#auxilary");
                    $.parser.parse("#auxilary");
                    var i = 1;
                    for (var key in subjectAuxilarys) {
                        var id = "auxilary" + i;
                        if (!isNull(subjectAuxilarys[key].dicAuxilaryCodeList)) {
                            var dicAuxilaryCodeList = subjectAuxilarys[key].dicAuxilaryCodeList;
                            dicAuxilaryCodeList.unshift({"showmsg": "==请选择==", "value": ''});
                        } else {
                            var dicAuxilaryCodeList = [];
                            dicAuxilaryCodeList.unshift({"showmsg": "==请选择==", "value": ''});
                        }
                        $('#' + id).combobox("loadData", dicAuxilaryCodeList);
                        $('#' + id).combobox("setValue", subjectAuxilarys[key].auxilaryValue);
                        i++;
                    }

                }
            },
            error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    )
}

/**
 * 新增凭证模板
 */
function addVoucherTemplate() {
    $("#myform").form('clear');//添加之前清空表达信息
    $('#myform').form('enableValidation');//设置验证样式
    $('#drandcr').combobox('setValue', "DR");
    $('#dlg').dialog({
        title: "新增凭证模板信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveVoucherTemplate(1);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $("#adjust").html("");
    $('#subjectId').combotree('setValue', "");
}

/**
 * 修改凭证模板
 */
function editVoucherTemplate() {
    $('#templateId').combotree('setValue', "");
    $('#myform').form('enableValidation');//设置验证样式
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length != 1) {
        $.messager.alert('系统提示', "请选择一行数据！", 'warning');
        return;
    }
    $('#dlg').dialog({
        title: "修改凭证模板信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveVoucherTemplate(2);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $("#adjust").html("");
    $('#myform').form('load', arr[0]);//页面赋值
    $('#subjectId').combotree('setValue', arr[0].subjectId);
}


/**
 * 保存凭证模板的方法
 */
function saveVoucherTemplate(ftype) {
    //验证表单信息
    if (!$("#myform").form('validate')) { //验证表单信息
        return;
    }
    var url = finance + "/voucherTemplate/editVoucherTemplate";
    if (1 == ftype) {
        url = finance + "/voucherTemplate/addVoucherTemplate";
    }
    $.messager.confirm('系统提示', "确定保存凭证模板信息吗？", function (parm) {
        if (!parm) {
            return;
        }
        var arr = [];
        $('#myform').form('submit', {
            url: url,
            onSubmit: function (param) {
                // 获取所有核算项目的值
                var i = 1;
                $("input[name='adjust']").each(function (i, item) {
                    arr.push(item.value);
                });
                param.ids = JSON.stringify(arr);
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlg').dialog('close');
                    $.messager.show({title: '系统提示', msg: data.message});
                    $("#dg").datagrid("load");//刷新表格
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });
    });
}

/**
 * 删除凭证模板
 */
function delVoucherTemplate() {
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "请选择你要删除的数据！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定要删除这' + arr.length + '条操凭证模板信息吗？', function (param) {
        if (!param) {
            return;
        }
        var ids = [];
        for (var i = 0; i < arr.length; i++) {
            ids.push(arr[i].id);
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: finance + "/voucherTemplate/delVoucherTemplate",
                dataType: "json",
                data: {
                    ids: JSON.stringify(ids)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $("#dg").datagrid("load");//刷新表格
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );
    });
}


